#include "../../../Include/Utils/Ticker/WizUtilsTicker.hpp"


namespace Wiz
{
    namespace Ticker
    {
        namespace Object
        {
            template<class TimeT>
            Type<TimeT>::Type(tTicker* TPtr) : m_TotalTime(0)
            {
                if (::Wiz::IsValidPtr(TPtr))
                {
                    TPtr->Register(this);
                }
            }

            template<class TimeT>
            Type<TimeT>::~Type()
            {
                m_TotalTime = 0;
            }

            template<class TimeT>
            const TimeT& Type<TimeT>::TotalTime() const
            {
                return m_TotalTime;
            }

            template<class TimeT>
            ::Wiz::Void::Type Type<TimeT>::DoTick(const tTime& DeltaTime)
            {
                m_TotalTime += DeltaTime;
                this->Tick(DeltaTime);
            }

            template<class TimeT>
            ::Wiz::Void::Type Type<TimeT>::Tick(const tTime& DeltaTime)
            {
            }

            //////////////////////////////////////////////////////////////////////////
            template class Type<::Wiz::Real32::Type>;
            template class Type<::Wiz::Real64::Type>;

            template class Type<::Wiz::Int8::Type>;
            template class Type<::Wiz::Int16::Type>;
            template class Type<::Wiz::Int32::Type>;
            template class Type<::Wiz::Int64::Type>;
            //////////////////////////////////////////////////////////////////////////
        } /// end of namespace Object
    } /// end of namespace Ticker
} /// end of namespace Wiz
